1 תשובות
ענה
iiddaannyy
ב
18 לפברואר 2013
#
זה מאוד פשוט:
get_called_class מחזירה לך את המחלקה הכי תחתית (כשההורה הכי למעלה והילדים למטה).
כשהגדרת אותה מחוץ ל-closure לא הייתה בעיה Lama הכי למטה בהירארכיה.
אבל כשקראת ל-get_called_class ב-closure מה שקרה הוא ככה:
1. יצירת closure והחזרתו.
2. ה-closure נכנס למשתנה $bild2.
3. Lama::bild2 סיימה לרוץ.
4. מפעילים את הפונקציה שיש ב-$bild2.
5. ה-closure (אם אתה יודע את אופן הפעולה של closure אתה יודע שהיא שומרת את ה-context שבו היא הוגדרה) לא זוכר את המחלקות היורשות של Mama.
6. get_called_class בודקת את המחלקה הכי תחתית בהירארכיה ורק כי ה-closure לא זוכר את המחלקות היורשות אז זה נחשב כאילו אין יורשות ל-Mama וזה מה שמוחזר.
זה לא באג, זו ההתנהגות של closure.
אני אבדוק את זה יותר לעומק בצהריים, כי לא היה לי ממש זמן לבדוק לעומק את מה שקורה.